<?php
/**
 * Ресурс приложения, определяющий параметры текущего сайта (подсайта)
 * 
 * @category Phorm
 * @package Application_Resource
 * @name /Phorm/Application/Resource/Site.php
 * @copyright phorm.ru
 * @since 01.06.2012
 * @author vladimir@kachalov.net
 * @todo Мб перекинуть в роутер
 */

class Phorm_Application_Resource_Site extends Zend_Application_Resource_ResourceAbstract {
	
	public function init() {
		
		$request = $this->_bootstrap->getResource('Request');
		$view = $this->_bootstrap->getResource('View');
		
		$options = $this->_bootstrap->getOptions();
		
		$uri = $request->getScheme() . '://' . $request->getHttpHost() . $request->getRequestUri();
		
		// @todo сделать наследование опций с основного сайта
		
		if(isset($options['sites'])) {
			foreach ($options['sites'] as $siteid=>$data) {
				if(isset($data['match']) && preg_match('#'.trim($data['match']).'#ui',$uri)) {
					$options['site'] = array('id' => isset($data['id']) ? $data['id'] : $siteid) + $data;
					break;
				}
			}
		}
		
		/**
		 * Установка обязательных значений
		 */
		
		if(!isset($options['site']['url'])) $options['site']['url'] = '';
		if(!isset($options['site']['path'])) $options['site']['path'] = '/';
		if(!isset($options['site']['navigation'])) $options['site']['navigation'] = 'en';
		
		/**
		 * Если определена локаль в сайте, обновляем локаль в переводчике, если нет - используем локаль из переводчика
		 */
		
		if(isset($options['site']['locale'])) {
			$options['resources']['translate']['locale'] = $options['site']['locale'];
		} else {
			$options['site']['locale'] = $options['resources']['translate']['locale'];
		}
		
		/**
		 * Инициализируем Zend_Locale (вернее кладем ее в реестр, с которым работают статичные методы Zend_Locale)
		 * @todo сделать класс-враппер (Phorm_Locale) для Zend_Locale, а также помощники вида для форматирования дат и чисел
		 */
		
		Zend_Registry::set('Zend_Locale',new Zend_Locale($options['site']['locale']));
		
		/**
		 * Обновляем опции в бутстрапе
		 */
		
		$this->_bootstrap->setOptions($options);
		
		/**
		 * Устанавливаем новый путь в запросе
		 * @todo Отвязать от домена и протокола, сделать зависимым только от RequestUri
		 */
		
		if(isset($options['site']['match'])) {
			$path = preg_replace('#'.$options['site']['match'].'#ui',$options['site']['path'],$uri);
			$request->setPathInfo($path);
		}
		
		/**
		 * Устанавливаем URL текущего сайта в объекте View
		 */
		
		$view->setSiteUrl($options['site']['url']);
		
		/**
		 * Устанавливаем JS-переменные в объекте View
		 */
		
		$options['site']['baseurl'] = $view->baseUrl();
		
		$view->JQuery()->addJavascript('var siteopts=' . ZendX_JQuery::encodeJson($options['site']) . ';');
		$view->JQuery()->addJavascriptFile($options['site']['baseurl'] . '/ui/i18n/' . $options['site']['locale'] . '.js');
		
	}
	
}